Servlet Listener হলো এমন ইন্টারফেস বা ক্লাস, যা Servlet API-তে বিশেষ ইভেন্ট বা কার্যকলাপ মনিটর এবং পরিচালনা করতে ব্যবহৃত হয়। Listener সাধারণত একটি অ্যাপ্লিকেশন বা সার্ভলেট কনটেইনারে ইভেন্ট (যেমন HTTP সেশন তৈরি বা ধ্বংস) ঘটলে কার্যকর হয়।
Servlet Listener এর কাজ
- ইভেন্ট মনিটর করা:
- সেশন, অ্যাপ্লিকেশন, বা রিকোয়েস্টের অবস্থা পরিবর্তনের ইভেন্ট।
- কাস্টম লজিক সম্পাদন:
- যেমন ডাটাবেস কানেকশন খোলা বা বন্ধ করা, লগিং করা ইত্যাদি।
সাধারণভাবে ব্যবহৃত Servlet Listeners
- ServletContextListener:
- অ্যাপ্লিকেশন শুরু বা বন্ধের সময় ইভেন্ট পরিচালনা করে।
- HttpSessionListener:
- HTTP সেশন তৈরি বা ধ্বংসের সময় কার্যকর হয়।
- ServletRequestListener:
- HTTP রিকোয়েস্ট তৈরি বা ধ্বংসের সময় কার্যকর হয়।
- HttpSessionAttributeListener:
- সেশনে অ্যাট্রিবিউট যোগ, মুছে ফেলা, বা পরিবর্তন মনিটর করে।
- ServletRequestAttributeListener:
- রিকোয়েস্টে অ্যাট্রিবিউট যোগ, মুছে ফেলা, বা পরিবর্তন মনিটর করে।
- ServletContextAttributeListener:
ServletContext-এ অ্যাট্রিবিউট যোগ, মুছে ফেলা, বা পরিবর্তন মনিটর করে।
উদাহরণ: Servlet Listeners এর ব্যবহার
Step 1: Maven ডিপেনডেন্সি
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>4.0.1</version>
<scope>provided</scope>
</dependency>
Step 2: ServletContextListener উদাহরণ
AppContextListener.java
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.annotation.WebListener;
@WebListener
public class AppContextListener implements ServletContextListener {
@Override
public void contextInitialized(ServletContextEvent sce) {
System.out.println("Application started: " + sce.getServletContext().getContextPath());
}
@Override
public void contextDestroyed(ServletContextEvent sce) {
System.out.println("Application stopped: " + sce.getServletContext().getContextPath());
}
}
আউটপুট (Console):
Application started: /myapp
Application stopped: /myapp
Step 3: HttpSessionListener উদাহরণ
SessionListener.java
import javax.servlet.annotation.WebListener;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;
@WebListener
public class SessionListener implements HttpSessionListener {
@Override
public void sessionCreated(HttpSessionEvent se) {
System.out.println("Session created: " + se.getSession().getId());
}
@Override
public void sessionDestroyed(HttpSessionEvent se) {
System.out.println("Session destroyed: " + se.getSession().getId());
}
}
আউটপুট (Console):
Session created: A123456789
Session destroyed: A123456789
Step 4: ServletRequestListener উদাহরণ
RequestListener.java
import javax.servlet.ServletRequestEvent;
import javax.servlet.ServletRequestListener;
import javax.servlet.annotation.WebListener;
@WebListener
public class RequestListener implements ServletRequestListener {
@Override
public void requestInitialized(ServletRequestEvent sre) {
System.out.println("Request initialized: " + sre.getServletRequest().getRemoteAddr());
}
@Override
public void requestDestroyed(ServletRequestEvent sre) {
System.out.println("Request destroyed: " + sre.getServletRequest().getRemoteAddr());
}
}
আউটপুট (Console):
Request initialized: 127.0.0.1
Request destroyed: 127.0.0.1
Step 5: HttpSessionAttributeListener উদাহরণ
SessionAttributeListener.java
import javax.servlet.annotation.WebListener;
import javax.servlet.http.HttpSessionAttributeListener;
import javax.servlet.http.HttpSessionBindingEvent;
@WebListener
public class SessionAttributeListener implements HttpSessionAttributeListener {
@Override
public void attributeAdded(HttpSessionBindingEvent event) {
System.out.println("Attribute added: " + event.getName() + " = " + event.getValue());
}
@Override
public void attributeRemoved(HttpSessionBindingEvent event) {
System.out.println("Attribute removed: " + event.getName());
}
@Override
public void attributeReplaced(HttpSessionBindingEvent event) {
System.out.println("Attribute replaced: " + event.getName());
}
}
Step 6: ServletRequestAttributeListener উদাহরণ
RequestAttributeListener.java
import javax.servlet.ServletRequestAttributeEvent;
import javax.servlet.ServletRequestAttributeListener;
import javax.servlet.annotation.WebListener;
@WebListener
public class RequestAttributeListener implements ServletRequestAttributeListener {
@Override
public void attributeAdded(ServletRequestAttributeEvent event) {
System.out.println("Request attribute added: " + event.getName() + " = " + event.getValue());
}
@Override
public void attributeRemoved(ServletRequestAttributeEvent event) {
System.out.println("Request attribute removed: " + event.getName());
}
@Override
public void attributeReplaced(ServletRequestAttributeEvent event) {
System.out.println("Request attribute replaced: " + event.getName());
}
}
Servlet Listeners এর ব্যবহার
- Application Initialization:
ServletContextListenerদিয়ে অ্যাপ্লিকেশন শুরু বা বন্ধ মনিটর করা।
- Session Management:
HttpSessionListenerদিয়ে সেশন তৈরি বা ধ্বংস মনিটর করা।
- Request Tracking:
ServletRequestListenerদিয়ে HTTP রিকোয়েস্টের জীবনচক্র ট্র্যাক করা।
- Attribute Monitoring:
HttpSessionAttributeListenerবাServletRequestAttributeListenerদিয়ে অ্যাট্রিবিউটের পরিবর্তন মনিটর করা।
উপসংহার
Servlet Listeners সার্ভলেট অ্যাপ্লিকেশনের ইভেন্ট পরিচালনার জন্য অপরিহার্য একটি ফিচার। এগুলোর মাধ্যমে অ্যাপ্লিকেশন এবং সেশন কনটেক্সট, রিকোয়েস্ট এবং অ্যাট্রিবিউটের পরিবর্তন পর্যবেক্ষণ ও নিয়ন্ত্রণ করা সহজ হয়।
Content added By
Read more